package global

import (
	"context"
	"github.com/go-redis/redis/v8"
	"go.uber.org/zap"
	"time"
)

//type redisDB struct {
//}

func InitRedis() {
	// 创建Redis客户端实例
	RedisClient = redis.NewClient(&redis.Options{
		Addr:     Config.Redis.Addr, // Redis服务器地址和端口
		Password: "",                // 如果有密码，填写密码
		DB:       0,                 // 使用的数据库编号，默认为0
	})
	// 检查连接是否成功
	if err := RedisClient.Ping(context.Background()).Err(); err != nil {
		ZapLog.Info("redis链接失败:%#v", zap.Any("error", err.Error()))
	} else {
		ZapLog.Info("redis连接成功:%#v", zap.Any("host", Config.Redis.Addr))
	}
}

// SetRedisKey 设置key value
func SetRedisKey(key string, value string, t time.Duration) error {
	err := RedisClient.Set(context.Background(), key, value, t).Err()
	if err != nil {
		return err
	}
	return nil
}

// GetRedisKey  获取key value
func GetRedisKey(key string) (string, error) {
	val, err := RedisClient.Get(context.Background(), key).Result()
	if err != nil {
		return "", err
	}
	return val, nil
}

// DeleteRedisKey 删除redis key
func DeleteRedisKey(key string) (int64, error) {
	result, err := RedisClient.Del(context.Background(), key).Result()
	if err != nil {
		return 0, err
	} else {
		return result, nil
	}
}

// TTLRedisKey 查看是否过期
func TTLRedisKey(key string) (time.Duration, error) {
	time, err := RedisClient.TTL(context.Background(), key).Result()
	if err != nil {
		return 0, err
	} else {
		return time, nil
	}
}
